import type * as React from "react";

declare module "react" {
  namespace React {
    interface HTMLAttributes<T> {
      class?: string | undefined;
    }
  }
}

/**
 * The `summary`, `remarks`, `example`, and `deprecated` sections reference their respective sections in the DocBlock.
 */
declare const DocBlock: React.FC<{
  /** canonical reference for the content displayed by this component */
  canonicalReference: string;
  /** defaults to `true`, can be set to `false` to hide the summary section */
  summary?: boolean;
  /** defaults to `false`, can be set to `show` to show the remarks section */
  remarks?: boolean;
  /** defaults to `false`, can be set to `true` to show the example section */
  example?: boolean;
  /** defaults to `false`, can be set to `true` to make the `remarks` section collapsible */
  remarksCollapsible?: boolean;
  /** defaults to `false`, can be set to `true` to information about deprecation status */
  deprecated?: boolean;
  /** defaults to `false`, can be set to `true` to include a <MinVersion> tag */
  releaseTag?: boolean;
  /** provides a custom order to render each section */
  customOrder?: Array<
    "summary" | "remarks" | "example" | "deprecated" | "releaseTag"
  >;
}>;
declare const Example: React.FC<{
  /** canonical reference for the content displayed by this component */
  canonicalReference: string;
  collapsible?: boolean | undefined;
  /** describes the nesting depth of the main heading for the markdown generated by this codeblock */
  headingLevel?: number | undefined;
  index?: number | undefined;
}>;
/**
 * This tag will create documentation like this:
 *
 * ````md
 * ### getCurrentResult
 *
 *   <DocBlock deprecated remarks releaseTag />
 *   #### Example (if available in the DocBlock)
 *   ```ts
 *   [example code here]
 *   ```
 *   #### Signature
 *   ```ts
 *   [the function signature here]
 *   ```
 *   #### Parameters
 *   [a table of parameters with types and descriptions]
 *   #### Result
 *   [the type of the result]
 * ````
 */
declare const FunctionDetails: React.FC<{
  /** canonical reference of the DocBlock to include. */
  canonicalReference: string;
  /** can be used to override the heading, which would usually just be the name of the function. This is useful if the interface name only makes sense in the context of a class, such as `client.refetchResult` or `ApolloClient.refetchResult` instead of `refetchResult`, which would be too generic */
  displayName?: string;
  /** describes the nesting depth of the main heading for the markdown generated by this codeblock */
  headingLevel: number;
  /** can be set to `false` to hide the result and parameters sections in the generated Docs page - this is useful if the parameters are not well documented */
  parameters?: boolean;
  /** can be set to `false` to hide the result and parameters sections in the generated Docs page - this is useful if the parameters are not well documented */
  result?: boolean;
  /** can be used to override the autogenerated rendered content of the `result` section */
  children?: React.ReactNode;
}>;
declare const InterfaceDetails: React.FC<{
  /** canonical reference for the content displayed by this component */
  canonicalReference: string;
  /** describes the nesting depth of the main heading for the markdown generated by this codeblock */
  headingLevel: number;
  /** an array of property names that should be displayed in the order they are defined, instead of the default alphabetical order */
  customPropertyOrder?: string[];
  /** can be used to override the heading, which would usually just be the name of the interface. This is useful if the interface name only makes sense in the context of a namespace, such as `useQuery.Result` instead of `Result`, which would be too generic */
  displayName?: string;
}>;
declare const PropertySignatureTable: React.FC<{
  /** canonical reference for the content displayed by this component */
  canonicalReference: string;
  idPrefix: string;
  prefix?: string | undefined;
  customOrder?: string[] | undefined;
  display?: "parent" | "child" | undefined;
  showHeaders?: boolean | undefined;
  genericNames?: string[] | undefined;
}>;
declare const EnumDetails: React.FC<{
  /** canonical reference for the content displayed by this component */
  canonicalReference: string;
  /** describes the nesting depth of the main heading for the markdown generated by this codeblock */
  headingLevel: number;
}>;
declare const ExpansionPanel: React.FC<
  React.PropsWithChildren<{
    title?: string | undefined;
    trackingId?: string | undefined;
    isPrimary?: boolean | undefined;
  }>
>;
declare const Tip: React.FC<React.PropsWithChildren<{}>>;
declare const Caution: React.FC<React.PropsWithChildren<{}>>;
declare const Note: React.FC<
  React.PropsWithChildren<{
    title?: string | undefined;
  }>
>;
declare const MinVersion: React.FC<
  React.PropsWithChildren<{
    version: string;
  }>
>;
declare const MultiCodeBlock: React.FC<React.PropsWithChildren<{}>>;

declare const ManualTupleItem: React.FC<
  React.PropsWithChildren<{
    name: string;
    type: string;
    idPrefix?: string;
  }>
>;
declare const ManualTuple: React.FC<React.PropsWithChildren>;
declare const Remarks: React.FC<{
  itemJson: string;
  canonicalReference: string;
  summary?: boolean | undefined;
  releaseTag?: boolean | undefined;
  remarks?: boolean | undefined;
  example?: boolean | undefined;
  remarksCollapsible?: boolean | undefined;
  deprecated?: boolean | undefined;
}>;
declare const YouTube: React.FC<{
  youTubeId: string;
}>;
declare const ButtonLink: React.FC<{
  href: string;
  style?: any;
  size?: string | undefined;
  colorScheme?: string | undefined;
}>;
type AllComponents = {
  DocBlock: typeof DocBlock;
  Example: typeof Example;
  FunctionDetails: typeof FunctionDetails;
  InterfaceDetails: typeof InterfaceDetails;
  PropertySignatureTable: typeof PropertySignatureTable;
  EnumDetails: typeof EnumDetails;
  ExpansionPanel: typeof ExpansionPanel;
  Tip: typeof Tip;
  Caution: typeof Caution;
  Note: typeof Note;
  MinVersion: typeof MinVersion;
  MultiCodeBlock: typeof MultiCodeBlock;
  ManualTupleItem: typeof ManualTupleItem;
  ManualTuple: typeof ManualTuple;
  Remarks: typeof Remarks;
  YouTube: typeof YouTube;
  ClientPQIntro: React.FC;
  ClientPQDifferences: React.FC;
  ClientPQImplementation: React.FC;
  PublishPQMs: React.FC;
  ButtonLink: typeof ButtonLink;
};

export type { AllComponents as MDXProvidedComponents };
declare global {
  type MDXProvidedComponents = AllComponents;
}
